package zheezes.protocol.impl.wt.du;

import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;

import zheezes.protocol.impl.wt.DataUnit;
import zheezes.protocol.impl.wt.meta.FrzData;
import zheezes.protocol.impl.wt.meta.FrzDate;
import zheezes.protocol.impl.wt.meta.WtMtAddr;


public class Ctrl9EDi0242DataUnit extends DataUnit {
	// private byte[] addr = new byte[5];
	private WtMtAddr addr = new WtMtAddr();
	private Map<FrzDate, FrzData> map = new LinkedHashMap<FrzDate, FrzData>();

	@Override
	public int getData(byte[] buf, int offset) {
		int idx = offset;
		idx += addr.getBytes(buf, idx);
		for (Entry<FrzDate, FrzData> e : map.entrySet()) {
			idx += e.getKey().getBytes(buf, idx);
			idx += e.getValue().getBytes(buf, idx);
		}
		return idx - offset;
	}

	@Override
	public int setData(byte[] buf, int offset, int max) {
		int idx = offset;
		idx += addr.setBytes(buf, idx, max);
		while (idx < max) {
			FrzDate date = new FrzDate();
			idx += date.setBytes(buf, idx, max);
			FrzData data = new FrzData();
			idx += data.setBytes(buf, idx, max);
		}
		return idx - offset;
	}

	@Override
	public int sizeOfData() {
		int size = addr.size();
		for (Entry<FrzDate, FrzData> e : map.entrySet()) {
			size += e.getKey().size() + e.getValue().size();
		}
		return size;
	}
}
